package com.hmall.feign.client;

import com.hmall.feign.pojo.Item;
import com.hmall.feign.pojo.PageDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @Description: 声明式对item-Service发起的Http协议调用(OpenFeign)
 * @Date: 2023/2/20 11:08
 */
@FeignClient("itemservice")
public interface ItemClient {

    /**
     * Get协议的查找商品接口
     *
     * @param id 商品ID
     * @return 商品信息
     */
    @GetMapping("/item/{id}")
    Item getItem(@PathVariable("id") Long id);


    /**
     * Put协议的扣减商品库存接口
     *
     * @param itemId 商品id
     * @param num    扣减商品数量
     */
    @GetMapping("/item/stock/{itemId}/{num}")
    boolean deductStock(@PathVariable("itemId") Long itemId, @PathVariable("num") Integer num);


    /**
     * Get协议的分页查询接口
     * @param page 当前页数
     * @param size 每页大小
     * @return 商品分页信息
     */
    @GetMapping("/item/list")
    PageDTO<Item> list(@RequestParam("page") Integer page, @RequestParam("size")  Integer size) ;

}
